﻿using System.Text.RegularExpressions;

namespace SourceGit.Commands {
    public class QueryFileSize : Command {
        private static readonly Regex REG_FORMAT = new Regex(@"^\d+\s+\w+\s+[0-9a-f]+\s+(\d+)\s+.*$");

        public QueryFileSize(string repo, string file, string revision) {
            WorkingDirectory = repo;
            Context = repo;
            Args = $"ls-tree {revision} -l -- {file}";
        }

        public long Result() {
            if (_result != 0) return _result;

            var rs = ReadToEnd();
            if (rs.IsSuccess) {
                var match = REG_FORMAT.Match(rs.StdOut);
                if (match.Success) {
                    return long.Parse(match.Groups[1].Value);
                }
            }

            return 0;
        }

        private long _result = 0;
    }
}
